package ListNodeSecond.SwordOffer;

public class GetIntersectionNode {
    /**
     * 剑指 Offer II 023. 两个链表的第一个重合节点
     * 给定两个单链表的头节点 headA 和 headB ，请找出并返回两个单链表相交的起始节点。如果两个链表没有交点，返回 null 。
     * <p>
     * 图示两个链表在节点 c1 开始相交：
     * <p>
     * <p>
     * <p>
     * 题目数据 保证 整个链式结构中不存在环。
     */
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) {
            return null;
        }
        ListNode pA = headA;
        ListNode pB = headB;
        while (pA != pB) {
           pA = pA == null ? headB : pA.next;
           pB = pB == null ? headA : pB.next;
        }
        return pA;
    }
}
